#pragma once

#include "MyActiveInterface.h"

namespace CO { namespace MyGroupNamespace { namespace MyPackageNamespace {

class MyActiveObjectContainer :
	public MyActiveInterface,
	public SpiFoundation::RoomFW::ActiveObjectContainer
{
public:

	//
	// Constructor/Destructor.
	//
	MyActiveObjectContainer(void);
	virtual ~MyActiveObjectContainer(void);
	void destruct(void);

	//
	// ISystemComponent overrides.
	//
	virtual bool initialize(SpiFoundation::Configuration::ConfigKey& configRoot);
	virtual SpiFoundation::RoomFW::PortIndex::PrimaryIndex getSystemPort(void) const;
	virtual void addChildren(SpiFoundation::Interface::ISystemComponentSPList& childList) const;

	//
	// ActiveObject overrides.
	//
	virtual SpiFoundation::RoomFW::ObjectId getObjectId(void) const;
	virtual const char* getObjectName(void) const;

private:

	//
	// TODO:  Use a binding list to manage child bindings.
	//
	SpiFoundation::RoomFW::BindingList bindings_;

	//
	// TODO:  Add private attributes by interface.
	//
	MyActiveInterfaceSP myActiveObject_;
	MyActiveInterfaceSP myActiveHSM_;
	MyActiveInterfaceSP myHsmMessageHandler_;
	long myConfigValue_;
};
//
// TODO:  Add a smart pointer typedef for your class.
//
typedef ::boost::shared_ptr<MyActiveObjectContainer> MyActiveObjectContainerSP;

}}}
